package day_7_14;

public class Main2 {
    /**
     * 151. 反转字符串中的单词
     * https://leetcode.cn/problems/reverse-words-in-a-string/description/?envType=study-plan-v2&envId=top-interview-150
     */
    public String reverseWords(String s) {
        // 删除收尾的空格
        s = s.trim();
        int i = s.length() - 1;
        int j = i;
        StringBuilder ret = new StringBuilder();
        while(i >= 0) {
            // 从后往前进行寻找每一个单词
            while(i >= 0 && s.charAt(i) != ' ') {
                i--;
            }
            // 将单词拼接到ret中
            ret.append(s.substring(i + 1,j + 1) + " ");
            // 跳过单词和单词中间的空格
            while(i >= 0 && s.charAt(i) == ' ') {
                i--;
            }
            // 这时候 i 在一个新单词上，将j也放到这个单词上
            j = i;
        }
        // 这样进行拼接的话，在最后一个单词后面存在一个空格，将其进行去除
        return ret.toString().trim();
    }
}
